#include "StdAfx.h"
#include "VaxSIPUserAgent.h"
#include "PhoneLineStatus.h"

CPhoneLineStatus::CPhoneLineStatus(void)
{
	
}

CPhoneLineStatus::~CPhoneLineStatus(void)
{
}

/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////

void CPhoneLineStatus::OnVaxInit(int nTotalLines)
{
	m_nTotalLines = nTotalLines;
}

void CPhoneLineStatus::OnVaxUnInit()
{
	
}

/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////

void CPhoneLineStatus::SelectLineHold(int nSelectedLineNo, BOOL bCheckStartConf)
{
    if (bCheckStartConf)
    {
        for (int nLineCount = 0; nLineCount < m_nTotalLines; nLineCount++)
        {
            if (m_pVaxSIPUserAgent->IsLineHold(nLineCount))
                m_pVaxSIPUserAgent->UnHoldLine(nLineCount);
        }
    }
    else
    {
        for (int nLineCount = 0; nLineCount < m_nTotalLines; nLineCount++)
        {
            if (nLineCount == nSelectedLineNo) continue;

            if (m_pVaxSIPUserAgent->IsLineConnected(nLineCount) == TRUE && m_pVaxSIPUserAgent->IsLineHold(nLineCount) == FALSE) 
            {
                m_pVaxSIPUserAgent->HoldLine(nLineCount);
            }
        }

        if (m_pVaxSIPUserAgent->IsLineHold(nSelectedLineNo))
			m_pVaxSIPUserAgent->UnHoldLine(nSelectedLineNo);
    }
}	

void CPhoneLineStatus::OnLineStatusTick(int nSelectedLineNo, BOOL bCheckStartConf)
{
	SelectLineHold(nSelectedLineNo, bCheckStartConf);
	
	for (int nLineNo = 0; nLineNo < m_nTotalLines; nLineNo++)
	{
		if (!m_pVaxSIPUserAgent->IsLineOpen(nLineNo))
		{
			OnChangeLineStatus(nLineNo, "close");
		}
		else if (m_pVaxSIPUserAgent->IsLineBusy(nLineNo))
		{
			if (m_pVaxSIPUserAgent->IsWaveFilePlaying(nLineNo))
			{
				OnChangeLineStatus(nLineNo, "playing");
			}
			else if (m_pVaxSIPUserAgent->IsLineHold(nLineNo))
			{
				OnChangeLineStatus(nLineNo, "hold");
			}
			else
			{
				OnChangeLineStatus(nLineNo, "busy");
			}
		}
		else
		{
			OnChangeLineStatus(nLineNo, "free");
		}
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////

void CPhoneLineStatus::OnChangeLineStatus(int nLineNo, LPCTSTR sStatus)
{
	
}